package unmsm.eapisw.taller.srh_persistencia.modelo;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name="SAC_PERMISOS")
public class Permisos implements Serializable{
	private int id;
	private String menunombre;
	private String nomarchivo;
	private int paratipo;
	private int estado;
	private Set<Usuario> usuarios = new HashSet<Usuario>(0);

	public Permisos() {
		// TODO Auto-generated constructor stub
	}
	public Permisos(int id) {
		this.id = id;
	}

	public Permisos(String menunombre, String nomarchivo, int paratipo,
			int estado) {
		this.menunombre = menunombre;
		this.nomarchivo = nomarchivo;
		this.paratipo = paratipo;
		this.estado = estado;
	}

	@Id
	@Column(name="IN_IDPERMISOS")
	@GeneratedValue(strategy=GenerationType.AUTO)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	@Column(name="VC_MENUNOMBRE")
	public String getMenunombre() {
		return menunombre;
	}
	public void setMenunombre(String menunombre) {
		this.menunombre = menunombre;
	}
	
	@Column(name="VC_NOMARCHIVO")
	public String getNomarchivo() {
		return nomarchivo;
	}
	public void setNomarchivo(String nomarchivo) {
		this.nomarchivo = nomarchivo;
	}
	
	@Column(name="IN_PARATIPO")
	public int getParatipo() {
		return paratipo;
	}
	public void setParatipo(int paratipo) {
		this.paratipo = paratipo;
	}
	
	@Column(name="IN_ESTADO", nullable=false)
	public int getEstado() {
		return estado;
	}
	public void setEstado(int estado) {
		this.estado = estado;
	}
	/**
	 * 	
	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name="SAC_USUARIOPERMISOS",
	joinColumns={@JoinColumn(name="IN_IDUSUARIO", referencedColumnName="IN_IDUSUARIO")}, 
	inverseJoinColumns={@JoinColumn(name="IN_IDPERMISOS", referencedColumnName="IN_IDPERMISOS")})
	 * **/
	@ManyToMany(mappedBy="permisos")
	public Set<Usuario> getUsuarios() {
		return usuarios;
	}
	public void setUsuarios(Set<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
}
